package com.ccjq.shosestore.shoppingcart.service;

import java.util.List;

import com.ccjq.shosestore.order.bo.OrderBo;
import com.ccjq.shosestore.shoppingcart.bo.SaveCartBo;
import com.ccjq.shosestore.shoppingcart.bo.ShowCartBo;

public interface ShoppingCartService{

	
	/**
	 * 当用户向购物车中添加商品成功时，显示自己的购物车：
	 * 向购物车中插入要添加的商品ID 商品数量  用户ID(从持久层的SaveCartBo中得到)
	 * 
	 * @param  saveCartBo 要添加购物车的数据模型
	 * @return 该用户的所有购物车商品信息集合
	 * */
	List<ShowCartBo> saveCart(SaveCartBo saveCartBo);
	
	/**
	 * 当用户直接查看自己的购物车时：
	 * 通过用户ID,查出购物车要展示的信息    (T_PRODUCT和T_SHOPPING_CART连表查询)
	 * 
	 * @param  userId 用户ID
	 * @return 要展示的购物车中商品的集合
	 * */
	List<ShowCartBo> queryCartById(String userId);
	
	/**
	 * 通过购物车Id  删除指定的商品 
	 * 
	 * @param shoppingCartId 购物车ID
	 * @return true  添加成功
	 * 		   false 添加失败
	 * */
	boolean delCartById(String shoppingCartId);
	
	
	/**
	 * 更新购物车数量的操作   通过购物车ID 和  获取到的文本框中的值
	 * 
	 * @param  quantity 更新后的数量
	 * 		   shoppingCartId 购物车ID
	 * @return true  添加成功
	 * 		   false 添加失败
	 * */
	boolean updateCartById(int quantity, String shoppingCartId);
	
	/**
	 * 提交结算订单
	 * 
	 * @param	cartS    控制层中调用queryCartById()方法返回的购物车集合
	 * 			orderBo  订单信息的模型    从前台结算页面得到的信息
	 * @return  杨哥需要的该用户的订单集合
	 * */
	List<OrderBo> commitOrder(List<ShowCartBo> cartS, OrderBo orderBo);
	
	/**
	 * 通过用户ID 查询购物车中商品总价 用于展示在页面的总价位置
	 * 
	 * @param userId 用户ID
	 * @return 购物车商品总价
	 * */
	double queryTotal(String userId);
}
